# author: LiuShihao
# data: 2020/11/27 8:44 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: Python中的类与对象、类对象与类属性、类方法与静态方法
"""
Python中一切皆对象
类的组成：类属性、类方法、实例方法、静态方法
类的定义：
"""
class Student:    # Student为类名  由一个或多个单词组成  单词第一个首字母大写，其余小写
    native_place = '上海'   # 直接写在类中的属性称为类属性
    # 初始化方法
    def __init__(self,name,age):  # name、age为实例属性
        self.name=name
        self.age=age
        print("初始化方法")
    # 实例方法   在类之外定义的称为函数，在类中定义的称为方法，
    def info(self):
        print('调用实例方法，我的名字叫{0},今年{1},岁'.format(self.name,self.age))
    # 类方法
    @classmethod
    def cm(cls):
        print('调用了类方法')
    @staticmethod
    def sm():
        print('调用了静态方法')
# 类的创建
student = Student('zs',19)
print(id(student))
print(type(student))
print(student)
print(student.name)  # 获得类的实例对象name
print(student.age)   # 获得类的实例对象age
student.cm()   # 调用类的类方法
student.sm()   # 调用类的静态方法
student.info() # 调用类的实例方法
# 类属性的使用方式
print(Student.native_place)
stu = Student('zs',18)
print(stu.native_place)
Student.native_place = '北京'  # 将类属性 上海 修改为 北京
print(Student.native_place)
print(stu.native_place)
# 类方法的使用方式
Student.cm()
# 静态方法的使用方式
Student.sm()
# 动态绑定属性和方法
